package leetcode;
/**
 * 83.删除排序链表中的重复元素
 * 存在一个按升序排列的链表，给你这个链表的头节点 head ，请你删除所有重复的元素，使每个元素 只出现一次 。
 * 返回同样按升序排列的结果链表。
 *
 * 输入：head = [1,2,3,3,4,4,5]
 * 输出：[1,2,3,4,5]
 */
public class Num_83 {
    //方法一：mymethod
    public ListNode deleteDuplicates2(ListNode head) {
        ListNode dummyHead = new ListNode(-101);
        dummyHead.next = head;
        ListNode prev = dummyHead;
        //判断prev的下一个值是否等于下下个值，注意要防止空指针异常
        while(prev.next != null && prev.next.next != null){
            if(prev.next.val == prev.next.next.val){
                prev.next = prev.next.next;
            }else{
                prev = prev.next;
            }
        }
        return dummyHead.next;
    }

    //方法二：比特
    public ListNode deleteDuplicates1(ListNode head) {
        ListNode dummyHead = new ListNode(-101);
        dummyHead.next = head;
        ListNode prev = dummyHead;
        ListNode cur = prev.next;
        //cur为prev的下一个节点
        while(cur != null){
            if(prev.val == cur.val){
                prev.next = cur.next;
            }else{
                prev = prev.next;
            }
            //把cur向后移一位
            cur = cur.next;
        }
        return dummyHead.next;
    }
}
